package com.yifan.testArray;

import java.util.Set;

/**
 * @Author YIFan
 * @Date 2020/6/7 12:17
 * @Version 1.0
 */
// 二分法查找 -- 数组需是有序的
public class TestBinarySearch {
    public static void main(String[] args) {
        int[] arry = {1,2,3,4,5,6,7,8};
        int target = 3;
        // 记录开始位置
        int start  = 0;
        // 记录结束位置
        int end = arry.length-1 ;
        // 记录中间位置
        int mid = ( start + end ) / 2 ;
        // 记录目标位置
        int index = -1 ;
        // 循环查找
        while (true){
            // 判断中间这个元素是不是要查找的
            if(arry[mid] == target ){// 是
                index = mid;
                break;
            }else {
                // 判断中间元素和目标元素的大小
                if( arry[mid] > target ){
                    // 把结束位置调整到中间位置前一个
                    end = mid - 1 ;
                }else {
                    // 把开始位置调整到中间位置后一个
                    start = mid + 1 ;
                }
                // 取出新的中间位置
                mid = ( start + end ) / 2 ;
            }
        }

        System.err.println(target+" , index  : " + index);

    }

}
